import io.jsonwebtoken.*;
import org.junit.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: wzw
 * @Date: 2020/12/20 18:33
 * @version: 1.8
 */
public class Mytest {
    /**
     * @author wzw
     * 创建token
     * @Date 18:33 2020/12/20
     * @return
    **/
    @Test
    public void createToken(){
        // 1.创建JWT
        JwtBuilder builder = Jwts.builder();

        // 2.构建头信息
        Map<String, Object> map = new HashMap<>();
        //信息没要求:可以见名之意
        map.put("alg", "HS256");
        map.put("keyId", "JWT");
        //设置头信息
        builder.setHeader(map);

        // 3.构建载荷信息
        //id
        builder.setId("001");
        //签发人
        builder.setIssuer("张三");
        //签发时间
        builder.setIssuedAt(new Date());
        // 30秒后过期
        builder.setExpiration(new Date(System.currentTimeMillis() + 30000));

        //声明自定义载荷信息
        HashMap<String, Object> claims = new HashMap<>();
        claims.put("school", "五道口学习");
        claims.put("address", "北五环");
        builder.setClaims(claims);


        // 4.添加签证(签名)(算法HS256,公司提供的密钥)
        builder.signWith(SignatureAlgorithm.HS256, "itheima");

        // 5.生成token
        String token = builder.compact();

        //加密格式:头信息.荷载.签证
        System.out.println("token:" + token);
    }

    @Test
    public void testParseToken(){
        //要解析的token
        String token = "eyJrZXlJZCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJhZGRyZXNzIjoi5YyX5LqU546vIiwic2Nob29sIjoi5LqU6YGT5Y-j5a2m5LmgIn0.mlypuZE3X0B9Nq8lvdj4HZDZ44gjSK8MUGfjbY7wMc0";
        //创建解析对象
        JwtParser parser = Jwts.parser();
        //设置签证(签名)
        parser.setSigningKey("itheima");
        //parseClaimsJws:获取token中内容,getBody:获取载荷内容
        Claims body = parser.parseClaimsJws(token).getBody();
        Jws<Claims> claimsJws = parser.parseClaimsJws(token);
        //打印
        System.out.println(claimsJws);
        System.out.println(body);
    }
}
